package entitys

import (
	"rpcSrv/dbs/mysqlGORM"
	"rpcSrv/utils"
)

//OSS文件相关信息
type FileCrypto struct {
	ID               int    `json:"id"`
	RefNumber        int    `json:"ref_number"`
	Uid              int    `json:"uid" orm:"uid"`
	FilePath         string `json:"file_path"`
	Width            int    `json:"width"`
	Height           int    `json:"height"`
	Size             int    `json:"size"`
	Type             int    `json:"type"`
	FileCryptoStr    string `json:"file_crypto_str"`
	ObjectName       string `json:"object_name"`
	CreatedTimestamp int64  `json:"created_timestamp"`
	UpdatedTimestamp int64  `json:"updated_timestamp"`
}

func (this *FileCrypto) TableName() string {
	return "file_crypto"
}

const file_crypto_schema = `
create table if not exists file_crypto
(
    id              int(10)      not null auto_increment unique,
	ref_number      int(10)      default 1 comment '被引用次数',
    uid             int(10)      not null comment '上传作者ID',
    file_path       varchar(255) not null comment '文件路径',
    width           int(10)   default null comment '宽度',
    height          int(10)   default null comment '高度',
    size            int(10)   default null comment '文件大小',
    type            tinyint   default 1 comment '文件类型 1图片 2视频 3普通文件',
    file_crypto_str varchar(100)  not null comment '文件MD5值',
    object_name     varchar(100) not null comment 'OSS中文件对象名',
    created_timestamp      bigint(13) default 0,
    updated_timestamp      bigint(13) default 0,
    primary key (id),
    index file_crypto_uid (uid) using btree,
    index file_crypto_crypto (file_crypto_str) using btree
) engine = INNODB
  default charset = utf8 comment 'OSS文件数据表';
`

func init() {
	db, err := mysqlGORM.GetMysqlDB()
	if utils.CheckErr(err) {
		return
	}
	tx := db.Begin()
	defer tx.Commit()
	if !db.HasTable(new(FileCrypto).TableName()) {
		if err = tx.Exec(file_crypto_schema).Error; utils.CheckErr(err) {
			tx.Rollback()
			return
		}
	}
}
